SPPF (Spatial Pyramid Pooling - Fast, 2021)

SPPF (Spatial Pyramid Pooling - Fast, 2021)

1. 서론: CNN의 가변 입력 문제와 공간 피라미드 풀링의 대두

1.1 전통적 CNN 아키텍처의 고정 입력 크기 제약

대부분의 초기 및 표준 컨볼루션 신경망(Convolutional Neural Network, CNN) 아키텍처는 224x224 픽셀과 같이 고정된 크기의 입력을 요구한다.1 이러한 제약은 CNN의 핵심 구성 요소인 컨볼루션 계층 자체에서 비롯된 것이 아니다. 컨볼루션 및 풀링 계층은 본질적으로 슬라이딩 윈도우(sliding-window) 방식으로 작동하기 때문에, 원칙적으로는 다양한 크기의 입력 특징 맵(feature map)을 처리할 수 있는 유연성을 가진다.1

문제의 근원은 네트워크 후반부에 위치하여 분류(classification)나 회귀(regression)와 같은 최종 작업을 수행하는 완전 연결 계층(Fully-Connected Layer, FC Layer)에 있다.1 FC 계층은 모든 입력 뉴런과 모든 출력 뉴런이 연결된 구조로, 이 연결을 정의하는 가중치(weight) 행렬의 크기가 고정되어 있다. 따라서 FC 계층으로 특징 맵을 전달하기 위해서는, 2차원 또는 3차원의 특징 맵을 1차원 벡터로 평탄화(flattening)하는 과정이 필요한데, 이 벡터의 길이가 항상 일정해야만 한다.6 이 구조적 한계로 인해 네트워크 전체의 입력 이미지 크기가 고정되어야 하는 ‘인위적인(artificial)’ 제약이 발생한다.1 결국, 유연한 특징 추출부(컨볼루션 계층)가 생성한 가변적 결과물을 경직된 의사 결정부(FC 계층)가 수용하지 못하는 아키텍처상의 병목 현상이 문제의 핵심이다.

1.2 고정 크기 입력을 위한 전처리 방식의 한계

이러한 고정 크기 제약을 해결하기 위해, 실세계의 다양한 크기를 가진 이미지들은 CNN에 입력되기 전에 강제로 크기를 맞추는 전처리 과정을 거친다. 대표적인 방법으로는 자르기(cropping)와 왜곡(warping 또는 resizing)이 있다.2

하지만 이러한 방식들은 심각한 한계를 내포한다. 자르기는 이미지의 일부 영역만을 사용하므로 객체의 전체적인 맥락이나 형태 정보를 유실할 위험이 크다. 예를 들어, 객체의 핵심적인 부분이 잘려나갈 경우 모델은 해당 객체를 정확히 인식하기 어렵다. 반면, 왜곡은 이미지 전체를 지정된 크기로 강제 변환하는 과정에서 객체의 고유한 종횡비(aspect ratio)를 파괴하고 심각한 기하학적 왜곡을 초래한다.6 이러한 정보의 손실과 왜곡은 모델의 인식 정확도를 직접적으로 저하시키는 주요 원인으로 작용한다.1 더 나아가, 객체는 현실 세계에서 다양한 스케일로 존재하는데, 입력 크기를 고정하는 것은 이러한 다중 스케일 변화에 대한 모델의 강인성(robustness)을 확보하기 어렵게 만든다.1

1.3 문제 해결의 필요성 및 SPP의 등장 배경

결론적으로, CNN의 잠재력을 최대한 활용하기 위해서는 이미지의 원본 정보를 왜곡 없이 처리하면서도 FC 계층의 고정 길이 입력 요구사항을 충족시킬 수 있는 새로운 메커니즘이 필요했다. 이러한 배경 속에서, 네트워크의 구조 자체를 변경하여 문제를 해결하려는 시도로 공간 피라미드 풀링(Spatial Pyramid Pooling, SPP)이 등장했다. SPP는 입력단에서의 조작 대신, 컨볼루션 계층과 FC 계층 사이의 병목 지점에 위치하여 가변 크기의 특징 맵을 고정 길이의 벡터로 지능적으로 변환하는 역할을 수행함으로써 이 문제를 근본적으로 해결하는 대안을 제시했다.1

2. 공간 피라미드 풀링(SPP)의 원리 및 구조

2.1 SPP의 개념적 기반

공간 피라미드 풀링은 전통적인 컴퓨터 비전 분야에서 큰 성공을 거둔 Bag-of-Words(BoW) 모델과 공간 피라미드 매칭(Spatial Pyramid Matching, SPM)의 핵심 아이디어를 딥러닝 아키텍처에 효과적으로 통합한 것이다.1 BoW 모델이 이미지 내 지역 특징(local feature)들의 발생 빈도를 히스토그램으로 표현하여 이미지 전체를 요약한다면, SPP는 CNN이 추출한 고수준 특징 맵의 활성화 값을 유사한 방식으로 집계한다.10

SPP는 여기서 한 걸음 더 나아가 SPM의 개념을 차용한다. SPM은 단순히 특징의 존재 유무를 넘어 공간적 분포 정보를 보존하기 위해 이미지를 여러 해상도의 그리드로 분할하고 각 그리드 셀 내부에서 특징을 집계한다.1 SPP는 이 원리를 특징 맵에 적용하여, 다양한 크기의 공간적 ’빈(bin)’으로 특징 맵을 분할하고 각 빈에서 특징을 풀링한다. 이를 통해 거친(coarse) 수준의 전역적 정보(예: 1x1 빈)와 세밀한(fine) 수준의 지역적 정보(예: 4x4 빈)를 동시에 포착할 수 있다.11 이는 전통적 SPM이 SIFT나 HOG와 같은 저수준의 수동 특징(handcrafted feature)을 집계했던 것에서, CNN이 학습한 고수준의 의미론적 특징(semantic feature)을 집계하는 패러다임의 전환을 의미한다. 즉, 시각적 패턴의 집계에서 의미론적 개념의 집계로 발전시킨 것이다.

2.2 SPP-Net 아키텍처

SPP를 적용한 네트워크인 SPP-Net은 기존 CNN 아키텍처의 마지막 컨볼루션 계층(예: VGG의 conv5)과 첫 번째 FC 계층 사이에 SPP 계층을 삽입하는 구조를 가진다.1 이 간단한 구조적 변경은 정보 집계의 시점을 입력 이미지 단계에서 깊은 특징 맵 단계로 이동시켜, 이미지의 원본 형태를 보존한 채로 네트워크가 특징을 학습할 수 있게 한다.2

SPP 계층의 작동 원리는 다음과 같다.

  1. 입력: 마지막 컨볼루션 계층으로부터 임의의 공간적 크기(가로 a, 세로 a)와 k개의 채널을 가진 특징 맵을 입력으로 받는다.10

  2. 다중 레벨 공간 빈: 미리 정의된 여러 수준의 피라미드(예: 4x4, 2x2, 1x1 그리드)로 특징 맵을 가상으로 분할한다. 이때 생성되는 총 빈의 수 M은 고정된다. 예를 들어, 3-레벨 피라미드는 총 M = 16 + 4 + 1 = 21개의 빈을 가진다.12

  3. 동적 풀링: 각 빈에 대한 풀링 연산의 윈도우 크기와 스트라이드(stride)는 입력 특징 맵의 크기 a에 비례하여 동적으로 결정된다. 예를 들어, n \times n개의 빈을 생성하기 위해 풀링 윈도우 크기는 \lceil a/n \rceil, 스트라이드는 \lfloor a/n \rfloor로 설정된다.10 이 동적 계산 덕분에 입력 특징 맵의 크기

a가 변하더라도 항상 고정된 수(n \times n)의 풀링 결과가 생성된다.

  1. 특징 집계: 각 공간 빈 내에서 최대 풀링(max-pooling)과 같은 풀링 연산을 적용하여, k개의 각 채널(필터)에 대해 하나의 대표 값을 추출한다.7

  2. 고정 길이 벡터 생성: 모든 빈(M개)과 모든 채널(k개)에서 추출된 풀링 결과를 순차적으로 연결(concatenate)하여 최종적으로 k \times M 차원의 고정 길이 벡터를 생성한다.2 이 벡터가 후속 FC 계층의 입력으로 사용되어, 가변 크기 입력 문제를 해결한다.

2.3 SPP의 장점

SPP-Net은 다음과 같은 혁신적인 장점들을 제공한다.

  • 입력 크기 유연성: 어떤 크기나 종횡비의 이미지도 별도의 왜곡 없이 처리하여 고정 길이의 특징 벡터를 생성할 수 있다.1
  • 객체 변형에 대한 강인성: 다중 레벨 풀링은 객체의 크기 변화, 위치 이동, 형태 변형 등에 대해 더 강인한 특징 표현을 학습하게 한다.2
  • 과적합 감소: 훈련 과정에서 다양한 크기의 이미지를 사용하는 ’다중 크기 훈련(Multi-size training)’이 가능해진다. 이는 모델의 스케일 불변성(scale-invariance)을 향상시키고 데이터 증강(data augmentation) 효과를 주어 과적합(overfitting)을 방지하는 데 도움이 된다.1
  • 객체 탐지 속도의 비약적 향상: R-CNN과 같은 기존의 객체 탐지 모델은 Selective Search 등으로 제안된 약 2000개의 후보 영역(region proposal) 각각에 대해 CNN 컨볼루션 연산을 반복적으로 수행해야 했다. 반면, SPP-Net은 전체 이미지에 대해 컨볼루션 연산을 단 한 번만 수행하여 공유 특징 맵(shared feature map)을 생성한다. 이후, 각 후보 영역에 해당하는 특징 맵 상의 위치에서 SPP를 적용하여 고정 길이 특징 벡터를 추출한다. 이 방식은 중복 계산을 제거하여 탐지 속도를 수십에서 수백 배까지 획기적으로 개선했다.1

3. SPP-Fast (SPPF)의 탄생: 속도와 효율성의 혁신

3.1 SPP의 계산적 한계

SPP는 개념적으로 매우 강력했지만, 실제 구현에서는 계산 효율성 측면에서 한계를 보였다. SPP의 구조는 여러 개의 서로 다른 커널 크기(예: 5x5, 9x9, 13x13)를 가진 최대 풀링 연산을 병렬(parallel) 로 수행하는 방식이다.16 즉, 동일한 입력 특징 맵에 대해 각각의 풀링 연산이 독립적으로 진행된다. 특히 9x9나 13x13과 같이 큰 커널을 사용하는 풀링은 상당한 계산 비용을 유발하며, 이는 실시간 처리가 중요한 애플리케이션에서 병목이 될 수 있었다.

3.2 SPPF의 핵심 아이디어: 병렬에서 직렬로의 전환

SPP-Fast(SPPF)는 이러한 SPP의 계산 비효율성을 해결하기 위해 제안된 최적화 버전이다. SPPF의 핵심 아이디어는 SPP의 병렬 구조를 직렬(serial/sequential) 구조로 전환하는 것이다.16 SPPF는 여러 개의 다른 크기 커널을 사용하는 대신, 단일 크기의 작은 커널(일반적으로 5x5)을 가진 최대 풀링 연산을 여러 번 연속적으로 적용한다.16

예를 들어, SPP가 입력 특징 맵에 대해 5x5, 9x9, 13x13 풀링을 각각 독립적으로 수행했다면, SPPF는 다음과 같이 작동한다.

  1. 입력 특징 맵에 5x5 최대 풀링을 적용한다 (결과 1).

  2. 결과 1에 다시 5x5 최대 풀링을 적용한다 (결과 2).

  3. 결과 2에 또다시 5x5 최대 풀링을 적용한다 (결과 3).

마지막으로 입력 특징 맵, 결과 1, 결과 2, 결과 3을 모두 연결(concatenate)하여 최종 출력을 생성한다.18

3.3 SPPF의 구조적 이점

이러한 직렬 구조는 SPP의 핵심 기능을 유지하면서도 상당한 구조적 이점을 제공한다.

  • 계산량 감소: SPPF의 두 번째 5x5 풀링은 이미 한 번의 풀링으로 크기가 줄어든 특징 맵에 대해 수행된다. 세 번째 풀링은 더욱 작은 특징 맵에 적용된다. 이는 SPP에서 원본 크기의 큰 특징 맵에 9x9나 13x13의 큰 커널을 직접 적용하는 것보다 훨씬 적은 연산량(FLOPs)을 요구한다. 결과적으로 SPPF는 SPP와 수학적으로 동일하거나 매우 유사한 출력을 생성하면서도 계산 비용을 크게 절감할 수 있다.18
  • 수용 영역(Receptive Field) 확장 효과 유지: 작은 커널을 연속적으로 적용하는 것은 큰 커널을 한 번 적용하는 것과 유사한 수용 영역 확장 효과를 가진다. 예를 들어, 5x5 풀링을 두 번 연속으로 적용하면 9x9 풀링과 비슷한 영역의 정보를 집계할 수 있다. 따라서 SPPF는 SPP의 핵심 장점인 다중 스케일 정보 집계 및 수용 영역 확장 능력을 효율적으로 유지한다.19

SPPF의 가치는 새로운 이론의 제시가 아닌, 기존의 강력한 개념을 하드웨어 및 계산 프레임워크에 훨씬 친화적인 방식으로 재구성한 ’구현상의 최적화’에 있다. 이는 복잡한 연산을 순서 변경을 통해 더 효율적으로 푸는 것과 같다. 이 실용적인 최적화 덕분에 SPP의 개념이 YOLO와 같이 속도에 극도로 민감한 실시간 객체 탐지 모델에 표준적으로 탑재될 수 있는 길이 열렸다.

4. SPP와 SPPF의 구조 및 성능 심층 비교 분석

4.1 아키텍처 비교

SPP와 SPPF의 가장 근본적인 차이는 데이터 흐름에 있다. SPP는 하나의 입력이 여러 병렬 경로로 분기된 후 결과가 합쳐지는 구조인 반면, SPPF는 하나의 입력이 단일 경로를 순차적으로 통과하며 각 단계의 출력이 다음 단계의 입력이 됨과 동시에 최종 연결을 위해 보존되는 구조다.16

PyTorch의 torch.nn.Module을 사용한 구현 예시를 통해 이 차이를 명확히 확인할 수 있다.18 SPP는 self.maxpool1(x), self.maxpool2(x), self.maxpool3(x)와 같이 동일한 입력 x에 대해 각각 다른 풀링 연산을 수행한 후 결과를 연결한다. 반면, SPPF는 o1 = self.maxpool(x), o2 = self.maxpool(o1), o3 = self.maxpool(o2)와 같이 이전 단계의 출력(o1, o2)을 다음 단계의 입력으로 재사용하여 연산 효율을 높인다.

특징 (Feature)SPP (Spatial Pyramid Pooling)SPPF (Spatial Pyramid Pooling - Fast)
풀링 전략 (Pooling Strategy)병렬 (Parallel)직렬 (Serial)
커널 사용 (Kernel Usage)다수의 다른 크기 커널 (e.g., 5x5, 9x9, 13x13)단일 크기의 작은 커널 반복 사용 (e.g., 5x5)
데이터 흐름 (Data Flow)단일 입력이 여러 풀링 모듈로 분기 후 결합단일 입력이 풀링 모듈을 순차적으로 통과하며 중간 결과 재사용
계산 원리 (Computational Principle)동일한 입력에 대해 독립적인 다중 스케일 풀링이전 풀링 결과를 다음 풀링의 입력으로 사용하여 계산량 감소

4.2 성능 벤치마크

아키텍처의 차이는 실제 성능에서 명확한 차이를 만들어낸다.

  • 추론 속도: 공개된 벤치마크 실험 결과에 따르면, SPPF는 SPP 대비 2배 이상의 처리 속도 향상을 보인다. 한 실험에서는 100회 반복 실행 시 SPP가 0.537초, SPPF가 0.207초 소요되어 약 2.58배의 속도 개선을 기록했다.18 다른 연구에서도 SPPF 계열 모듈이 SPP보다 약 1.5배 빠른 연산 속도를 보였다고 보고되었다.23
  • 계산 복잡도 (FLOPs): SPPF는 더 적은 FLOPs로 SPP와 동일한 결과를 달성한다. 이는 YOLOv5의 개발자에 의해 “mathematically identical with less FLOPs“라고 공식적으로 확인된 바 있다.20
  • 정확도: SPPF는 속도를 개선하면서도 SPP의 핵심 기능인 다중 스케일 특징 융합 능력을 그대로 보존하므로, 모델의 정확도(mAP) 저하를 유발하지 않는다.21
지표 (Metric)SPPSPPF성능 향상 (Performance Gain)
추론 시간 (Inference Time)~0.537 s (100 runs) 18~0.207 s (100 runs) 18~2.58배 빠름 (Faster)
연산량 (FLOPs)높음 (Higher)낮음 (Lower) 20계산 효율성 증대 (More Efficient)
정확도 (mAP)기준 (Baseline)동일 (Identical) 21성능 저하 없음 (No Degradation)
파라미터 수 (Parameters)동일 (Identical)동일 (Identical)변화 없음 (No Change)

4.3 미묘한 차이와 고려사항

대부분의 시나리오에서 SPPF가 우월한 성능을 보이지만, 그 효과는 절대적이지 않을 수 있다. 한 연구에서는 특정 조건 하에서 SPPF로 인한 추론 속도 향상이 크지 않아 최종 모델에서 SPP를 대체하지 않은 사례를 보고했다.24 이는 전체 네트워크 아키텍처에서 SPP/SPPF 모듈이 차지하는 연산 비중, 사용된 하드웨어의 특성, 입력 이미지의 해상도 등 다양한 요인에 따라 성능 향상의 폭이 달라질 수 있음을 시사한다.

5. 현대 객체 탐지 모델에서의 SPPF 활용: YOLO 계열을 중심으로

5.1 YOLOv5에서의 SPPF 도입

실시간 객체 탐지 분야의 표준 모델 중 하나인 YOLOv5는 v6.0 릴리즈를 기점으로 기존의 SPP 모듈을 SPPF로 전격 교체했다.18 이 아키텍처 변경의 주된 동기는 처리 속도를 두 배 이상 향상시키면서도 기능적으로 동일한 출력을 유지하여 모델의 전반적인 효율성을 극대화하기 위함이었다.18 YOLOv5 아키텍처에서 SPPF 모듈은 백본(Backbone) 네트워크의 가장 마지막 단에 위치한다.26 이곳은 이미지로부터 깊은 수준의 의미론적 특징(semantic features)이 모두 추출된 직후로, SPPF는 이 풍부한 특징 맵을 입력받아 다양한 스케일의 컨텍스트 정보를 효과적으로 융합하고 수용 영역을 확장하는 핵심적인 역할을 수행한다.19

5.2 SPPF의 기능적 진화: 고정 벡터 생성에서 특징 융합으로

SPPF의 역할은 시대의 흐름과 아키텍처의 발전에 따라 진화했다. 초기 SPP-Net에서 SPP의 주된 임무는 가변 크기의 특징 맵을 FC 계층이 요구하는 고정 길이 벡터로 변환하는 ’문제 해결사(problem-solver)’였다.10 FC 계층의 구조적 한계를 극복하기 위한 필수적인 구성 요소였던 것이다.

그러나 YOLOv5와 같은 현대의 완전 컨볼루션 네트워크(Fully Convolutional Network, FCN)는 FC 계층에 대한 의존도가 거의 없거나 아예 사용하지 않는다. 이러한 구조에서 SPPF의 역할은 더 이상 고정 길이 벡터 생성이 아니다. 대신, 입력 특징 맵의 공간적 차원(가로, 세로)을 유지하면서, 여러 스케일에서 풀링된 특징들을 기존 특징 맵에 **융합(fusion)**하여 표현력을 강화하는 ’성능 강화제(performance-enhancer)’로 기능이 변화했다.20 구체적으로, SPPF는 입력 특징 맵과 여러 단계의 풀링을 거친 특징 맵들을 채널 차원에서 연결(concatenate)한다. 이렇게 풍부해진 다중 스케일 정보는 후속 단계인 Neck 네트워크(예: PANet)로 전달되어, 모델이 다양한 크기의 객체를 더 정확하게 탐지할 수 있는 기반을 마련한다.18 이로 인해 YOLOv5의 SPPF 출력은 입력 이미지 크기에 따라 공간적 크기는 변하지만, 채널 수는 고정되는 특징을 가지며, 이는 원본 SPP-Net의 동작 방식과는 명확히 구분되는 현대적 FCN 구조에 최적화된 형태다.20

5.3 SPPF가 YOLO 성능에 미치는 영향

YOLO 모델에서 SPPF는 다음과 같은 긍정적인 영향을 미친다.

  • 수용 영역 확장: 단일 모듈 내에서 5x5, 9x9, 13x13 커널 풀링에 해당하는 넓은 수용 영역을 매우 효율적으로 확보한다. 이를 통해 모델은 이미지의 더 넓은 영역을 참조하여 객체의 컨텍스트를 파악하는 능력이 향상되며, 이는 큰 객체와 작은 객체를 모두 안정적으로 탐지하는 데 필수적이다.19
  • 중요 특징 분리: 최대 풀링은 특정 영역에서 가장 두드러진 특징 값을 추출하는 연산이다. SPPF는 이러한 연산을 여러 스케일에 걸쳐 수행하고 그 결과를 결합함으로써, 불필요한 노이즈를 억제하고 객체 인식에 가장 중요한 핵심 특징들을 효과적으로 분리하고 강조하는 역할을 한다.
  • 계산 효율성: 실시간 객체 탐지에서 추론 속도는 정확도만큼이나 중요한 성능 지표다. SPPF는 SPP의 모든 장점을 계승하면서도 계산 병목 현상을 일으키지 않으므로, YOLOv5가 높은 정확도와 빠른 속도라는 두 마리 토끼를 모두 잡는 데 결정적인 기여를 한다.18

6. SPPF의 진화와 변형: SimSPPF, SPPCSPC, 그리고 ASPP와의 관계

SPPF의 성공은 다양한 변형 및 발전 모델의 등장을 촉진했다. 이들은 경량화, 성능 극대화 등 각기 다른 목표를 추구하며 진화했다.

6.1 경량화를 향한 진화: SimSPPF (Simplified SPPF)

SimSPPF는 SPPF를 더욱 단순화하고 경량화하여 추론 속도를 극대화한 버전으로, 주로 엣지 디바이스나 연산 자원이 제한된 환경을 목표로 한다.30 주요 구조적 변경점은 다음과 같다.

  1. 활성화 함수 변경: 기존 SPPF의 컨볼루션 블록(CBS)에 사용되던 SiLU(Sigmoid Linear Unit) 활성화 함수를 연산이 더 단순하고 빠른 ReLU(Rectified Linear Unit)로 변경한다.31
  2. 구조 단순화: 일부 구현에서는 풀링 커널을 5x5로 표준화하여 구조를 더욱 간소화한다.32

이러한 변경을 통해 SimSPPF는 산업용 애플리케이션에서 요구하는 극도의 추론 효율성을 달성하는 것을 목표로 한다.30

6.2 성능 극대화를 향한 진화: SPPCSPC

YOLOv7에서 처음 도입된 SPPCSPC는 SPP(또는 SPPF)의 개념과 CSP(Cross Stage Partial) 구조를 결합하여 성능을 한 단계 끌어올린 모듈이다.33 CSP 구조는 특징 맵을 두 개의 경로로 분할하여 한쪽은 복잡한 연산(여기서는 SPP 블록)을, 다른 쪽은 간단한 연산을 거친 후 다시 병합하는 방식이다.36 이는 그래디언트 흐름을 원활하게 하고, 계산량을 줄이며, 학습 능력을 향상시키는 효과가 있다. SPPCSPC는 SPP의 강력한 다중 스케일 특징 융합 능력과 CSP의 계산 효율성을 결합하여, 성능과 효율의 최적 균형을 추구한다.

6.3 다른 패러다임과의 비교: ASPP (Atrous Spatial Pyramid Pooling)

ASPP는 SPP 계열과 이름은 유사하지만 근본적으로 다른 패러다임을 사용하는 모듈이다.

  • 핵심 차이: SPP/SPPF가 **최대 풀링(Max-Pooling)**을 사용하여 특징을 집계하고 공간 해상도를 감소시키는 반면, ASPP는 **아트러스 컨볼루션(Atrous/Dilated Convolution)**을 사용한다.38
  • 아트러스 컨볼루션: 이 컨볼루션은 커널 내부에 간격(dilation rate)을 두어 파라미터 수를 늘리지 않고도 수용 영역을 효과적으로 확장하는 기술이다. 가장 큰 장점은 공간 해상도를 그대로 유지하면서 다중 스케일 컨텍스트 정보를 포착할 수 있다는 점이다.38
  • 주요 적용 분야: 이러한 특성 때문에 ASPP는 픽셀 단위의 정밀한 예측이 요구되는 의미론적 분할(Semantic Segmentation) 분야에서 주로 사용된다.40 반면, SPP/SPPF는 객체의 위치를 바운딩 박스로 근사하는 객체 탐지 분야에서 더 널리 채택되었다.
모듈 (Module)핵심 혁신 (Key Innovation)주요 적용 모델 (Primary Model)주요 목표 (Main Goal)
SPP다중 레벨 병렬 풀링으로 고정 길이 벡터 생성SPP-Net 1CNN의 가변 크기 입력 문제 해결
SPPF직렬 풀링 구조로 SPP와 동일 결과, 더 빠른 속도YOLOv5 18실시간 모델을 위한 계산 효율성 극대화
SimSPPFSPPF 구조 단순화 (e.g., ReLU 활성화 함수)경량 YOLO 모델들 30엣지 디바이스를 위한 극도의 경량화 및 속도 향상
SPPCSPCSPP와 CSP(Cross Stage Partial) 구조의 결합YOLOv7 34특징 융합 능력과 계산 효율성의 균형, 성능 극대화
ASPP아트러스 컨볼루션을 이용한 다중 스케일 특징 추출DeepLab 계열 38공간 해상도 유지하며 컨텍스트 확보 (주로 분할용)

7. 결론: SPPF의 의의와 향후 전망

7.1 SPPF의 기술적 의의 요약

SPPF는 Kaiming He 등이 제안한 혁신적인 SPP 개념을 실용적으로 구현한 결정적인 최적화 사례라 할 수 있다. SPP의 병렬 구조를 계산적으로 훨씬 효율적인 직렬 구조로 재해석함으로써, 다중 스케일 특징 융합이라는 강력한 아이디어를 성능 저하 없이 실시간 객체 탐지 모델의 표준 구성 요소로 자리매김하게 했다. 이 과정에서 SPP의 역할은 FC 계층의 한계를 해결하는 ’문제 해결사’에서, FCN의 성능을 극대화하는 ’성능 강화제’로 성공적으로 진화했다. SPPF의 채택은 YOLOv5가 속도와 정확도 사이의 탁월한 균형을 달성하는 데 핵심적인 기여를 했다고 평가할 수 있다.

7.2 향후 연구 및 발전 방향

SPPF의 성공은 아이디어뿐만 아니라 효율적인 구현이 딥러닝 발전에 얼마나 중요한지를 보여주는 대표적인 사례로 남을 것이다. 향후 이 분야의 연구는 다음과 같은 방향으로 발전할 것으로 전망된다.

  • 동적 및 적응형 구조: 현재의 SPP 계열 모듈은 고정된 피라미드 구조를 사용한다. 앞으로는 입력 데이터의 복잡성이나 특성에 따라 풀링의 수준이나 커널 크기를 동적으로 조절하는 적응형(adaptive) 모듈에 대한 연구가 활발해질 수 있다.
  • 다른 메커니즘과의 융합: SPPCSPC가 CSP 구조와 결합했듯이, 어텐션(attention) 메커니즘이나 더 진보된 경량 컨볼루션 기법(예: GSConv)과의 융합을 통해 성능과 효율을 동시에 최적화하려는 시도는 계속될 것이다.43
  • 하드웨어-소프트웨어 공동 최적화: 특정 하드웨어(NPU, FPGA 등) 아키텍처에 최적화된 새로운 형태의 공간 피라미드 집계 구조가 등장할 수 있다. 이는 소프트웨어 알고리즘과 하드웨어 설계를 함께 고려하는 공동 최적화(co-design)를 통해 현재의 효율성을 뛰어넘는 성능을 달성할 잠재력을 가진다.

8. 참고 자료

  1. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition - SciSpace, https://scispace.com/papers/spatial-pyramid-pooling-in-deep-convolutional-networks-for-2ktmlzxxaa
  2. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition - arXiv, https://arxiv.org/abs/1406.4729
  3. How to use CNN to train input data of different size? - Stack Overflow, https://stackoverflow.com/questions/36262860/how-to-use-cnn-to-train-input-data-of-different-size
  4. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition - CiteSeerX, https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=38d3b8a276717e672f93be86bb4e28d3bdc93382
  5. Why must a CNN have a fixed input size? - Data Science Stack Exchange, https://datascience.stackexchange.com/questions/64022/why-must-a-cnn-have-a-fixed-input-size
  6. Variable Input Shape Image Classification | by Taechawat Konkaew | Wisesight Thailand, https://blog.wisesight.com/variable-input-shape-image-classification-f0991719b7db
  7. C 7.3 | Spatial Pyramid Pooling | SPPNet Classification | Fast RCNN | Machine learning | EvODN - YouTube, https://www.youtube.com/watch?v=2IoHC_fhrFU
  8. Input Size Limitations for CNN : r/deeplearning - Reddit, https://www.reddit.com/r/deeplearning/comments/sdgzfq/input_size_limitations_for_cnn/
  9. Evaluation of Robust Spatial Pyramid Pooling Based on Convolutional Neural Network for Traffic Sign Recognition System - MDPI, https://www.mdpi.com/2079-9292/9/6/889
  10. Understanding SPPNet for Object Detection and Classification - Towards Data Science, https://towardsdatascience.com/understanding-sppnet-for-object-detection-and-classification-682d6d2bdfb/
  11. Spatial Pyramid Pooling Explained | by Neville - Medium, https://cvinvolution.medium.com/spatial-pyramid-pooling-explained-3a1dd9ddf661
  12. Review: Spatial Pyramid Pooling[1406.4729] | by Sanchit Tanwar | Analytics Vidhya, https://medium.com/analytics-vidhya/review-spatial-pyramid-pooling-1406-4729-bfc142988dd2
  13. Review: SPPNet —1st Runner Up (Object Detection), 2nd Runner Up (Image Classification) in ILSVRC 2014 | by Sik-Ho Tsang - Medium, https://medium.com/coinmonks/review-sppnet-1st-runner-up-object-detection-2nd-runner-up-image-classification-in-ilsvrc-906da3753679
  14. What are the key differences between spatial pyramid pooling and other feature pooling methods in deep convolutional networks? - Consensus, https://consensus.app/search/what-are-the-key-differences-between-spatial-pyram/6mHfps8RT_aSJaHTaqB-eA/
  15. Learning Day 63: Object detection 2— SPP-Net | by De Jun Huang | dejunhuang | Medium, https://medium.com/dejunhuang/learning-day-63-object-detection-2-spp-net-3e04238f39d4
  16. (a) SPP structure diagram and (b) SPPF structure diagram. | Download Scientific Diagram - ResearchGate, https://www.researchgate.net/figure/a-SPP-structure-diagram-and-b-SPPF-structure-diagram_fig6_362193968
  17. Research on rice disease recognition based on improved SPPFCSPC-G YOLOv5 network, https://pmc.ncbi.nlm.nih.gov/articles/PMC10723668/
  18. Ultralytics YOLOv5 Architecture, https://docs.ultralytics.com/yolov5/tutorials/architecture_description/
  19. YOLOv5 Tutorial | Architecture, Assigning Targets & Loss Function Explained - YouTube, https://www.youtube.com/watch?v=WM7G4KPIFao
  20. Understanding SPP and SPPF implementation · Issue #8785 · ultralytics/yolov5 - GitHub, https://github.com/ultralytics/yolov5/issues/8785
  21. YOLOv8 architecture · Issue #2266 - GitHub, https://github.com/ultralytics/ultralytics/issues/2266
  22. Comparison of the architecture of SPP and SPPF [47]. - ResearchGate, https://www.researchgate.net/figure/Comparison-of-the-architecture-of-SPP-and-SPPF-47_fig11_369399106
  23. Performance comparison between SPPF-G and SPP. - ResearchGate, https://www.researchgate.net/figure/Performance-comparison-between-SPPF-G-and-SPP_tbl1_371798711
  24. Comparison between the SPP and SPPF. - ResearchGate, https://www.researchgate.net/figure/Comparison-between-the-SPP-and-SPPF_tbl4_365962643
  25. What is the difference between “SPPF/SPP -> C3” and “C3 -> SPPF/SPP” in backbone ? · Issue #13428 · ultralytics/yolov5 - GitHub, https://github.com/ultralytics/yolov5/issues/13428
  26. SF-YOLOv5: A Lightweight Small Object Detection Algorithm Based on Improved Feature Fusion Mode - Sik-Ho Tsang, https://sh-tsang.medium.com/sf-yolov5-a-lightweight-small-object-detection-algorithm-based-on-improved-feature-fusion-mode-59ff7460bac8
  27. SF-YOLOv5: A Lightweight Small Object Detection Algorithm Based on Improved Feature Fusion Mode - PMC - PubMed Central, https://pmc.ncbi.nlm.nih.gov/articles/PMC9371183/
  28. YOLOv7 vs YOLOv5: A Detailed Technical Comparison - Ultralytics YOLO Docs, https://docs.ultralytics.com/compare/yolov7-vs-yolov5/
  29. YOLOv5 vs YOLOv7: A Detailed Comparison - Ultralytics YOLO Docs, https://docs.ultralytics.com/compare/yolov5-vs-yolov7/
  30. Integrating lightweight YOLOv5s and facial 3D keypoints for enhanced fatigued-driving detection - PeerJ, https://peerj.com/articles/cs-2447/
  31. GS-YOLO: A Lightweight Identification Model for Precision Parts - MDPI, https://www.mdpi.com/2073-8994/17/2/268?type=check_update&version=1
  32. SimSPPF Structure Diagram. - ResearchGate, https://www.researchgate.net/figure/SimSPPF-Structure-Diagram_fig3_383288173
  33. Optimized YOLOv7 for Small Target Detection in Aerial Images Captured by Drone - The Science and Information (SAI) Organization, https://thesai.org/Downloads/Volume14No9/Paper_9-Optimized_YOLOv7_for_Small_Target_Detection_in_Aerial_Images.pdf
  34. Improved YOLOv7 for Small Object Detection Algorithm Based on Attention and Dynamic Convolution - MDPI, https://www.mdpi.com/2076-3417/13/16/9316
  35. Improved YOLOv7-based steel surface defect detection algorithm - AIMS Press, https://www.aimspress.com/aimspress-data/mbe/2024/1/PDF/mbe-21-01-016.pdf
  36. YOLOv5l architecture. SPPF represents a computation-efficient version… - ResearchGate, https://www.researchgate.net/figure/YOLOv5l-architecture-SPPF-represents-a-computation-efficient-version-of-the-Spatial_fig2_372584148
  37. SPP vs SPPCSP · Issue #817 · WongKinYiu/yolov7 - GitHub, https://github.com/WongKinYiu/yolov7/issues/817
  38. Review: DeepLabv1 & DeepLabv2 — Atrous Convolution (Semantic Segmentation) | by Sik-Ho Tsang, https://sh-tsang.medium.com/review-deeplabv1-deeplabv2-atrous-convolution-semantic-segmentation-b51c5fbde92d
  39. The architectures of atrous spatial pyramid pooling (ASPP) and feature… - ResearchGate, https://www.researchgate.net/figure/The-architectures-of-atrous-spatial-pyramid-pooling-ASPP-and-feature-pyramid-network_fig2_332582729
  40. How does spatial pyramid pooling contribute to semantic segmentation in deep learning?, https://consensus.app/search/how-does-spatial-pyramid-pooling-contribute-to-sem/qsjhLmanQ2O4qfbqYLBOGQ/
  41. U-Net based on atrous spatial pyramid pooling model for medical image segmentation in COVID-19, http://jase.tku.edu.tw/articles/jase-202212-25-6-0012.pdf
  42. YOLOv7-UAV: An Unmanned Aerial Vehicle Image Object Detection Algorithm Based on Improved YOLOv7 - MDPI, https://www.mdpi.com/2079-9292/12/14/3141
  43. Transmission line insulator defect detection algorithm based on MAP-YOLOv8 - PMC, https://pmc.ncbi.nlm.nih.gov/articles/PMC11937589/